package br.ita.trucocearense.server.core.remote;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;

import br.ita.trucocearense.common.core.interfaces.remote.UsuarioRemoto;
import br.ita.trucocearense.common.core.interfaces.remoteobjects.ObjUsuario;
import br.ita.trucocearense.server.core.dao.UsuarioDaoImpl;
import br.ita.trucocearense.server.domain.Usuario;

public class UsuarioRemotoImpl extends UnicastRemoteObject implements
		UsuarioRemoto {

	private ArrayList<String> usuariosLogado = new ArrayList<String>();
	private UsuarioDaoImpl dao = new UsuarioDaoImpl();
	
	public UsuarioRemotoImpl() throws RemoteException {
	}
	
	@Override
	public ObjUsuario fazerLogin(String login, String senha)
			throws RemoteException {
		System.out.println("login: " + login + " senha: " + senha);
		
		Usuario user = this.getDao().getByLogin(login);
		if (user == null)
			System.out.println("login n existe");
		else
			System.out.println("senha: " + user.getSenha());
		
		if (user == null || user.getSenha().equals(senha) == false){
			if (user!=null)System.out.println("senha nao confere: ");
			return null;
		}
		System.out.println("Existe usuario e senha correta");
		
		for(int i = 0; i < usuariosLogado.size(); i++)
			if (usuariosLogado.get(i).equals(user.getLogin()))
				return null;
		System.out.println("usuario nao logado");
		
		usuariosLogado.add(user.getLogin());
		return user;
	}

	@Override
	public void fazerLogout(String login) throws RemoteException {
		usuariosLogado.remove(login);
	}

	@Override
	public int obterScoreAtualizado(String login) throws RemoteException {
		Usuario user = this.getDao().getByLogin(login);
		return user.getScore();
	}

	public UsuarioDaoImpl getDao() {
		return dao;
	}

	@Override
	public boolean cadastrarUsuario(String login, String senha, String apelido)
			throws RemoteException {
		Usuario user = getDao().getByLogin(login);
		if (user != null)
			return false;
		user = new Usuario(login,senha,apelido,1000);
		dao.insert(user);
		usuariosLogado.add(user.getLogin());
		return true;
	}

}
